package com.zenithmind.library.service;

import com.zenithmind.common.result.Result;
import com.zenithmind.library.pojo.dto.BookCreateDTO;
import com.zenithmind.library.pojo.dto.BookUpdateDTO;
import com.zenithmind.library.pojo.vo.BookVO;

import java.util.List;

/**
 * 图书管理服务接口
 * 遵循接口隔离原则：只包含管理相关的方法
 * 
 * @author ZenithMind
 * @since 2024-06-14
 */
public interface BookManagementService {

    /**
     * 创建图书
     * 
     * @param createDTO 创建DTO
     * @return 创建结果
     */
    Result<BookVO> createBook(BookCreateDTO createDTO);

    /**
     * 更新图书
     * 
     * @param id 图书ID
     * @param updateDTO 更新DTO
     * @return 更新结果
     */
    Result<BookVO> updateBook(String id, BookUpdateDTO updateDTO);

    /**
     * 删除图书
     * 
     * @param id 图书ID
     * @return 删除结果
     */
    Result<Void> deleteBook(String id);

    /**
     * 批量删除图书
     * 
     * @param ids 图书ID列表
     * @return 删除结果
     */
    Result<Void> batchDeleteBooks(List<String> ids);

    /**
     * 上架图书
     * 
     * @param id 图书ID
     * @return 操作结果
     */
    Result<Void> publishBook(String id);

    /**
     * 下架图书
     * 
     * @param id 图书ID
     * @return 操作结果
     */
    Result<Void> unpublishBook(String id);

    /**
     * 推荐图书
     * 
     * @param id 图书ID
     * @return 操作结果
     */
    Result<Void> recommendBook(String id);

    /**
     * 取消推荐图书
     * 
     * @param id 图书ID
     * @return 操作结果
     */
    Result<Void> unrecommendBook(String id);
}
